package com.oak.designmode._21_single;

/**
 * 懒汉式单例模式
 * 优点：使用时再加载对象，空间资源利用效率高
 * 缺点：{@code getInstance}方法需要同步，并发效率低
 *
 * @Description
 * @Author guoxy
 * @Date 2019/12/6 0006
 * @Version 1.0
 */
public class SingletonLazy {

    /**
     * JVM重排序问题
     */
    private static volatile SingletonLazy instance;

    private SingletonLazy() {
    }

    /**
     * 加锁防止对象重复创建
     *
     * @return
     */
    public static SingletonLazy getInstance() {
        if (instance == null) {
            // 块级锁，节省内存资源
            synchronized (SingletonLazy.class){
                if(instance == null){
                    instance = new SingletonLazy();
                }
            }
        }
        return instance;
    }
}
